Fix jruby encoding in new thread (#12919) #12930
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fix jruby encoding in new thread (#12919)
In jruby
runtime.evalScriptlet('Encoding::UTF_8')
can be broken under a newly created thread, which can cause protobuf encoding to fail. For example: https://github.com/ntkme/sass-embedded-host-ruby/actions/runs/5108602231/jobs/9182569583#step:5:544It real issue seems to be in jruby itself. A bug report with minimal reproduction has been filed at jruby/jruby#7820
This PR fixes the problem by effectively replacing
runtime.evalScriptlet('Encoding::UTF_8')
withruntime.getEncodingService().convertEncodingToRubyEncoding(org.jcodings.specific.UTF8Encoding.INSTANCE)
, which works on all threads.Closes #12919
COPYBARA_INTEGRATE_REVIEW=#12919 from ntkme:fix-jruby-encoding 345680e
FUTURE_COPYBARA_INTEGRATE_REVIEW=#12919 from ntkme:fix-jruby-encoding 345680e